<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>fastText: fasttext::ProductQuantizer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="favicon.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">fastText
   &#160;<span id="projectnumber">d00d36476b15</span>
   </div>
   <div id="projectbrief">Fast text processing tool/library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classfasttext_1_1ProductQuantizer.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classfasttext_1_1ProductQuantizer-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">fasttext::ProductQuantizer Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="productquantizer_8h_source.html">productquantizer.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a08b62937f9073fb4d95f161da7121850"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a08b62937f9073fb4d95f161da7121850">ProductQuantizer</a> ()</td></tr>
<tr class="separator:a08b62937f9073fb4d95f161da7121850"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8563da401dbfaa98983ef0c92f92a18f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a8563da401dbfaa98983ef0c92f92a18f">ProductQuantizer</a> (int32_t, int32_t)</td></tr>
<tr class="separator:a8563da401dbfaa98983ef0c92f92a18f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb6a2ade7e4a77d7b59f03c081d11d91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#adb6a2ade7e4a77d7b59f03c081d11d91">get_centroids</a> (int32_t, uint8_t)</td></tr>
<tr class="separator:adb6a2ade7e4a77d7b59f03c081d11d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f7b2b81820abc0c577a89a768ef3347"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a4f7b2b81820abc0c577a89a768ef3347">get_centroids</a> (int32_t, uint8_t) const</td></tr>
<tr class="separator:a4f7b2b81820abc0c577a89a768ef3347"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa957e4e92eb6111152f6e34b0b4a27cd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#aa957e4e92eb6111152f6e34b0b4a27cd">assign_centroid</a> (const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, uint8_t *, int32_t) const</td></tr>
<tr class="separator:aa957e4e92eb6111152f6e34b0b4a27cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeba73a087e59f504472063db0a217e84"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#aeba73a087e59f504472063db0a217e84">Estep</a> (const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, uint8_t *, int32_t, int32_t) const</td></tr>
<tr class="separator:aeba73a087e59f504472063db0a217e84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f6cc5e957f5546523aea7dd9e826f25"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a5f6cc5e957f5546523aea7dd9e826f25">MStep</a> (const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, const uint8_t *, int32_t, int32_t)</td></tr>
<tr class="separator:a5f6cc5e957f5546523aea7dd9e826f25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06c91357dc88225714daa10548525352"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a06c91357dc88225714daa10548525352">kmeans</a> (const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, int32_t, int32_t)</td></tr>
<tr class="separator:a06c91357dc88225714daa10548525352"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40e3090d1f7e525c3e9787d9856d3b7d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a40e3090d1f7e525c3e9787d9856d3b7d">train</a> (int, const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *)</td></tr>
<tr class="separator:a40e3090d1f7e525c3e9787d9856d3b7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82e0fb5da37c5c6a62d6f9f6d34d91d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a82e0fb5da37c5c6a62d6f9f6d34d91d6">mulcode</a> (const <a class="el" href="classfasttext_1_1Vector.html">Vector</a> &amp;, const uint8_t *, int32_t, <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>) const</td></tr>
<tr class="separator:a82e0fb5da37c5c6a62d6f9f6d34d91d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0039e0eccfc7dc15ddb3be3bac0fec3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#ac0039e0eccfc7dc15ddb3be3bac0fec3">addcode</a> (<a class="el" href="classfasttext_1_1Vector.html">Vector</a> &amp;, const uint8_t *, int32_t, <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>) const</td></tr>
<tr class="separator:ac0039e0eccfc7dc15ddb3be3bac0fec3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b6fedf0a199ed0ec1afc2aea26a4b37"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a1b6fedf0a199ed0ec1afc2aea26a4b37">compute_code</a> (const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, uint8_t *) const</td></tr>
<tr class="separator:a1b6fedf0a199ed0ec1afc2aea26a4b37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca0eb5cd10d5bba60b4f3f37f87676f6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#aca0eb5cd10d5bba60b4f3f37f87676f6">compute_codes</a> (const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *, uint8_t *, int32_t) const</td></tr>
<tr class="separator:aca0eb5cd10d5bba60b4f3f37f87676f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e4d58883fb38225c6f4731770b89274"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a6e4d58883fb38225c6f4731770b89274">save</a> (std::ostream &amp;)</td></tr>
<tr class="separator:a6e4d58883fb38225c6f4731770b89274"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4060617809c0099a9e5ca73ec0497056"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a4060617809c0099a9e5ca73ec0497056">load</a> (std::istream &amp;)</td></tr>
<tr class="separator:a4060617809c0099a9e5ca73ec0497056"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:ac44db00342a54cb05df9d0c136a8633c"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#ac44db00342a54cb05df9d0c136a8633c">nbits_</a> = 8</td></tr>
<tr class="separator:ac44db00342a54cb05df9d0c136a8633c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa68c0f82fab09a93c2024a4dceecdf7"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#afa68c0f82fab09a93c2024a4dceecdf7">ksub_</a> = 1 &lt;&lt; <a class="el" href="classfasttext_1_1ProductQuantizer.html#ac44db00342a54cb05df9d0c136a8633c">nbits_</a></td></tr>
<tr class="separator:afa68c0f82fab09a93c2024a4dceecdf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad439c3fefe554fa05f2b1d06ddcd77b6"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#ad439c3fefe554fa05f2b1d06ddcd77b6">max_points_per_cluster_</a> = 256</td></tr>
<tr class="separator:ad439c3fefe554fa05f2b1d06ddcd77b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38780ae9c1997722683bb43d55ece633"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a38780ae9c1997722683bb43d55ece633">max_points_</a> = <a class="el" href="classfasttext_1_1ProductQuantizer.html#ad439c3fefe554fa05f2b1d06ddcd77b6">max_points_per_cluster_</a> * <a class="el" href="classfasttext_1_1ProductQuantizer.html#afa68c0f82fab09a93c2024a4dceecdf7">ksub_</a></td></tr>
<tr class="separator:a38780ae9c1997722683bb43d55ece633"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae71f8417a9265bdee493edfa6139d757"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#ae71f8417a9265bdee493edfa6139d757">seed_</a> = 1234</td></tr>
<tr class="separator:ae71f8417a9265bdee493edfa6139d757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa968d226983fbebfd2bb9d80bf6571f"><td class="memItemLeft" align="right" valign="top">const int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#afa968d226983fbebfd2bb9d80bf6571f">niter_</a> = 25</td></tr>
<tr class="separator:afa968d226983fbebfd2bb9d80bf6571f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2334f23eb94911fa4b528a584eb7f7e4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a2334f23eb94911fa4b528a584eb7f7e4">eps_</a> = 1e-7</td></tr>
<tr class="separator:a2334f23eb94911fa4b528a584eb7f7e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afdeec3948e983b1f3e1e36292153e300"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#afdeec3948e983b1f3e1e36292153e300">dim_</a></td></tr>
<tr class="separator:afdeec3948e983b1f3e1e36292153e300"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e09b5c96869b0b4758348b976152309"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a1e09b5c96869b0b4758348b976152309">nsubq_</a></td></tr>
<tr class="separator:a1e09b5c96869b0b4758348b976152309"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9221f241be27487c671bbbba7a84b389"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a9221f241be27487c671bbbba7a84b389">dsub_</a></td></tr>
<tr class="separator:a9221f241be27487c671bbbba7a84b389"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae79be52ccbb6230ce129234e150bc826"><td class="memItemLeft" align="right" valign="top">int32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#ae79be52ccbb6230ce129234e150bc826">lastdsub_</a></td></tr>
<tr class="separator:ae79be52ccbb6230ce129234e150bc826"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56ed1ae67f47e95f2d1f4c6146d4913a"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#a56ed1ae67f47e95f2d1f4c6146d4913a">centroids_</a></td></tr>
<tr class="separator:a56ed1ae67f47e95f2d1f4c6146d4913a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5755b1c5ed3128430f1c1de2c03ac26"><td class="memItemLeft" align="right" valign="top">std::minstd_rand&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfasttext_1_1ProductQuantizer.html#af5755b1c5ed3128430f1c1de2c03ac26">rng</a></td></tr>
<tr class="separator:af5755b1c5ed3128430f1c1de2c03ac26"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a08b62937f9073fb4d95f161da7121850"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08b62937f9073fb4d95f161da7121850">&#9670;&nbsp;</a></span>ProductQuantizer() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">fasttext::ProductQuantizer::ProductQuantizer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8563da401dbfaa98983ef0c92f92a18f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8563da401dbfaa98983ef0c92f92a18f">&#9670;&nbsp;</a></span>ProductQuantizer() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">fasttext::ProductQuantizer::ProductQuantizer </td>
          <td>(</td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>dim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>dsub</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ac0039e0eccfc7dc15ddb3be3bac0fec3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0039e0eccfc7dc15ddb3be3bac0fec3">&#9670;&nbsp;</a></span>addcode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::addcode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classfasttext_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>codes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>&#160;</td>
          <td class="paramname"><em>alpha</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aa957e4e92eb6111152f6e34b0b4a27cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa957e4e92eb6111152f6e34b0b4a27cd">&#9670;&nbsp;</a></span>assign_centroid()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> fasttext::ProductQuantizer::assign_centroid </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>c0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>code</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a1b6fedf0a199ed0ec1afc2aea26a4b37"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1b6fedf0a199ed0ec1afc2aea26a4b37">&#9670;&nbsp;</a></span>compute_code()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::compute_code </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>code</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aca0eb5cd10d5bba60b4f3f37f87676f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca0eb5cd10d5bba60b4f3f37f87676f6">&#9670;&nbsp;</a></span>compute_codes()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::compute_codes </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>codes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aeba73a087e59f504472063db0a217e84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeba73a087e59f504472063db0a217e84">&#9670;&nbsp;</a></span>Estep()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::Estep </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>centroids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>codes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="adb6a2ade7e4a77d7b59f03c081d11d91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adb6a2ade7e4a77d7b59f03c081d11d91">&#9670;&nbsp;</a></span>get_centroids() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> * fasttext::ProductQuantizer::get_centroids </td>
          <td>(</td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a4f7b2b81820abc0c577a89a768ef3347"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f7b2b81820abc0c577a89a768ef3347">&#9670;&nbsp;</a></span>get_centroids() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> * fasttext::ProductQuantizer::get_centroids </td>
          <td>(</td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>i</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a06c91357dc88225714daa10548525352"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06c91357dc88225714daa10548525352">&#9670;&nbsp;</a></span>kmeans()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::kmeans </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>d</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a4060617809c0099a9e5ca73ec0497056"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4060617809c0099a9e5ca73ec0497056">&#9670;&nbsp;</a></span>load()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::load </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>in</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a5f6cc5e957f5546523aea7dd9e826f25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f6cc5e957f5546523aea7dd9e826f25">&#9670;&nbsp;</a></span>MStep()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::MStep </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>x0</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname"><em>centroids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>codes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a82e0fb5da37c5c6a62d6f9f6d34d91d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82e0fb5da37c5c6a62d6f9f6d34d91d6">&#9670;&nbsp;</a></span>mulcode()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> fasttext::ProductQuantizer::mulcode </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classfasttext_1_1Vector.html">Vector</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>codes</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32_t&#160;</td>
          <td class="paramname"><em>t</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>&#160;</td>
          <td class="paramname"><em>alpha</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a6e4d58883fb38225c6f4731770b89274"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e4d58883fb38225c6f4731770b89274">&#9670;&nbsp;</a></span>save()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::save </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>out</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a40e3090d1f7e525c3e9787d9856d3b7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40e3090d1f7e525c3e9787d9856d3b7d">&#9670;&nbsp;</a></span>train()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fasttext::ProductQuantizer::train </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> *&#160;</td>
          <td class="paramname">&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a56ed1ae67f47e95f2d1f4c6146d4913a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56ed1ae67f47e95f2d1f4c6146d4913a">&#9670;&nbsp;</a></span>centroids_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt;<a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a>&gt; fasttext::ProductQuantizer::centroids_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="afdeec3948e983b1f3e1e36292153e300"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdeec3948e983b1f3e1e36292153e300">&#9670;&nbsp;</a></span>dim_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int32_t fasttext::ProductQuantizer::dim_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a9221f241be27487c671bbbba7a84b389"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9221f241be27487c671bbbba7a84b389">&#9670;&nbsp;</a></span>dsub_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int32_t fasttext::ProductQuantizer::dsub_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a2334f23eb94911fa4b528a584eb7f7e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2334f23eb94911fa4b528a584eb7f7e4">&#9670;&nbsp;</a></span>eps_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="namespacefasttext.html#a7afdad102f318271c14154b8e65e5ea3">real</a> fasttext::ProductQuantizer::eps_ = 1e-7</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="afa68c0f82fab09a93c2024a4dceecdf7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa68c0f82fab09a93c2024a4dceecdf7">&#9670;&nbsp;</a></span>ksub_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int32_t fasttext::ProductQuantizer::ksub_ = 1 &lt;&lt; <a class="el" href="classfasttext_1_1ProductQuantizer.html#ac44db00342a54cb05df9d0c136a8633c">nbits_</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ae79be52ccbb6230ce129234e150bc826"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae79be52ccbb6230ce129234e150bc826">&#9670;&nbsp;</a></span>lastdsub_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int32_t fasttext::ProductQuantizer::lastdsub_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a38780ae9c1997722683bb43d55ece633"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38780ae9c1997722683bb43d55ece633">&#9670;&nbsp;</a></span>max_points_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int32_t fasttext::ProductQuantizer::max_points_ = <a class="el" href="classfasttext_1_1ProductQuantizer.html#ad439c3fefe554fa05f2b1d06ddcd77b6">max_points_per_cluster_</a> * <a class="el" href="classfasttext_1_1ProductQuantizer.html#afa68c0f82fab09a93c2024a4dceecdf7">ksub_</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ad439c3fefe554fa05f2b1d06ddcd77b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad439c3fefe554fa05f2b1d06ddcd77b6">&#9670;&nbsp;</a></span>max_points_per_cluster_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int32_t fasttext::ProductQuantizer::max_points_per_cluster_ = 256</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ac44db00342a54cb05df9d0c136a8633c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac44db00342a54cb05df9d0c136a8633c">&#9670;&nbsp;</a></span>nbits_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int32_t fasttext::ProductQuantizer::nbits_ = 8</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="afa968d226983fbebfd2bb9d80bf6571f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa968d226983fbebfd2bb9d80bf6571f">&#9670;&nbsp;</a></span>niter_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int32_t fasttext::ProductQuantizer::niter_ = 25</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a1e09b5c96869b0b4758348b976152309"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e09b5c96869b0b4758348b976152309">&#9670;&nbsp;</a></span>nsubq_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int32_t fasttext::ProductQuantizer::nsubq_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="af5755b1c5ed3128430f1c1de2c03ac26"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5755b1c5ed3128430f1c1de2c03ac26">&#9670;&nbsp;</a></span>rng</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::minstd_rand fasttext::ProductQuantizer::rng</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ae71f8417a9265bdee493edfa6139d757"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae71f8417a9265bdee493edfa6139d757">&#9670;&nbsp;</a></span>seed_</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const int32_t fasttext::ProductQuantizer::seed_ = 1234</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>/data/users/cpuhrsch/fbsource/fbcode/deeplearning/fastText/src/<a class="el" href="productquantizer_8h_source.html">productquantizer.h</a></li>
<li>/data/users/cpuhrsch/fbsource/fbcode/deeplearning/fastText/src/<a class="el" href="productquantizer_8cc.html">productquantizer.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespacefasttext.html">fasttext</a></li><li class="navelem"><a class="el" href="classfasttext_1_1ProductQuantizer.html">ProductQuantizer</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
